/**
 * Created by xiebang
 * Description
 * User:小谢
 * Date:2021-12-28
 * Time:17:54
 */
public class TestDemo {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("helloworld");
        System.out.println(sb.delete(5, 10).insert(0, "你好"));
    }
    public static void main5(String[] args) {
        StringBuilder sb = new StringBuilder("abc");
        String str = sb.toString();//转换为str
    }
    public static void main4(String[] args) {
        //字符串转换为StringBuilder
        String str = "abcd";
        StringBuilder sb = new StringBuilder(str);

        StringBuilder sb1 = new StringBuilder();
        sb1.append(str);
    }
    /*
    String每次拼接产生新的对象
    StringBuffer/StringBuilder每次拼接都是返回当前对象。
     */
    public static void main3(String[] args) {
//        String str = "hello";
//        for (int i = 0; i < 10; i++) {
//            str += i;//每次循环产生一个StringBuilder对象
//        }
//        System.out.println(str);

        //翻译
        String str1 = "hello";
        for (int i = 0; i < 10; i++) {
            StringBuilder sb1 = new StringBuilder();
            str1 = sb1.append(str1).append(i).toString();
        }
        System.out.println(str1);
        //优化
        String str = "hello";
        StringBuilder sb = new StringBuilder();
        sb.append(str);
        for (int i = 0; i < 10; i++) {
            sb.append(i);
        }
        str = sb.toString();
        System.out.println(str);
    }
    public static void main2(String[] args) {
        String str = "abc";
        str += "def";
//        //相当于
//        StringBuilder sb = new StringBuilder();//底层优化为这样的代码
        //为什么要优化：因为上面过程中会产生多个对象，这个过程只产生一个对象。
//        str = sb.append(str).append("def").toString();
        System.out.println(str);
    }
    public static void main1(String[] args) {
        String s= "hello";
//        StringBuffer sb = "hello";//不可以直接赋值
        StringBuffer sb = new StringBuffer("hello");//优先看构造方法。

        //String 拼接字符串的方式 :
        s += "xie";//创造了一个新的对象
        //StringBuffer拼接字符串
        sb.append("xie").append(1);
        System.out.println(s);
        System.out.println(sb);
        System.out.println(sb.reverse());//逆置字符串
        //与Sting的赋值方式不同，只能通过构造方法的形式赋值。
    }
}
